In this notebook we consider the role of religious affiliation and religiosity in the second “think/believe” task, in which participants completed a series of fill-in-the-blanks with free responses.

NAs introduced by coercionNAs introduced by coercionNAs introduced by coercion

Demographics

First, let’s just look at how people in different countries replied to the relevant questions.

Religious affiliation

thb2_demo_regp_1_TEXT: “Are you a part of any religious group? If yes, what group?”

..._demo_rlgn: “What religion do you practice, if any?”

This question was included in the bigger “packet” (not in the “Think Believe” survey itself). It was open-response, but here I’ve done my best to code the respones as “Christian,” “Buddhist,” “Other religious,” or “Not religious.”

Seems to have been omitted in Ghana?

Factor `religion` contains implicit NA, consider using `forcats::fct_explicit_na`

Combining thb2_demo_regp_1_TEXT and ..._demo_rlgn

Here I’ll count someone as “Christian” if I coded their response to either thb2_demo_regp_1_TEXT or ..._demo_rlgn as “Christian” (etc.).

Factor `new_relig` contains implicit NA, consider using `forcats::fct_explicit_na`

Religiosity

thb2_demo_regp: “Are you a part of any religious group?”

Factor `thb2_demo_regp` contains implicit NA, consider using `forcats::fct_explicit_na`

thb2_demo_rely: “From 1 to 7, how religious are you? (1 = not religious at all, 7 = extremely religious)”

Seems to have been omitted in Thailand?

Factor `thb2_demo_rely` contains implicit NA, consider using `forcats::fct_explicit_na`

thb2_demo_impr: “From 1 to 7, how important to you is your religious practice? (1 = not important at all, 7 = of utmost importance)”

Seems to have been omitted in Thailand?

Factor `thb2_demo_impr` contains implicit NA, consider using `forcats::fct_explicit_na`

thb2_demo_wors: “How often do you attend places of worship?”

Factor `thb2_demo_wors` contains implicit NA, consider using `forcats::fct_explicit_na`

thb2_demo_bgod: “What best describes your level of belief in God?”

Factor `thb2_demo_bgod` contains implicit NA, consider using `forcats::fct_explicit_na`

thb2_demo_bbuh: “What best describes your level of belief in Buddha?”

Factor `thb2_demo_bbuh` contains implicit NA, consider using `forcats::fct_explicit_na`

thb2_demo_bosp: “What best describes your level of belief in another spiritual being (other than God or Buddha)?”

Factor `thb2_demo_bosp` contains implicit NA, consider using `forcats::fct_explicit_na`

thb2_demo_atsn: "What best describes your attitude towards the supernatural?

Factor `thb2_demo_atsn` contains implicit NA, consider using `forcats::fct_explicit_na`

Response options:

  1. “There is no such thing as supernatural forces or beings”
  2. “We cannot know if there are supernatural forces and beings”
  3. “There might be supernatural forces and beings”
  4. “Supernatural forces and beings exist but we cannot know what they are like”
  5. “There definitely are supernatural forces and beings”

thb2_demo_imsn: “From 1 to 7, how important to you is your attitude toward the supernatural? (1 = not important at all, 7 = of utmost importance)”

Factor `thb2_demo_imsn` contains implicit NA, consider using `forcats::fct_explicit_na`

Analyses

Now, let’s look at how responses to our think/believe questions might have varied depending on religion/religiosity. For now, I’ll just focus on a couple of variables that seem to have been answered in reasonable ways.

Religious affiliation

Parameter β Std. Err. df t p
Intercept 0.28 0.02 67.41 13.30 <0.001 ***
Category (religious) 0.22 0.01 23.88 19.78 <0.001 ***
Religious affiliation (Christian vs. not religious) -0.02 0.02 61.59 -0.79 0.430
Category (religious) × Religious affiliation (Christian vs. not religious) -0.02 0.01 2112.07 -2.89 0.004 **

Religiosity

thb2_demo_rely: “From 1 to 7, how religious are you? (1 = not religious at all, 7 = extremely religious)”

r2.6 <- lmer(believeX ~ super_cat * country * thb2_demo_rely_num
             + (1 + super_cat | thb2_subj) + (1 | question),
             data = d2_long %>% 
               filter(country != "Thailand") %>%
               mutate(thb2_demo_rely_num = scale(thb2_demo_rely_num)),
             contrasts = list(country = "contr.sum"))
contrasts dropped from factor country due to missing levelscontrasts dropped from factor country due to missing levelsModel failed to converge with max|grad| = 0.00233299 (tol = 0.002, component 1)contrasts dropped from factor country due to missing levelscontrasts dropped from factor country due to missing levels
Parameter β β' β'' Std. Err. df t p
Intercept 0.18 - - 0.02 97.46 9.96 <0.001 ***
Category (religious) 0.13 0.34 0.34 0.02 70.82 7.99 <0.001 ***
Country (US) 0.10 0.18 0.18 0.02 280.23 5.20 <0.001 ***
Country (Ghana) -0.11 -0.17 -0.17 0.03 289.15 -3.68 <0.001 ***
Country (China) 0.03 0.06 0.06 0.02 274.89 1.41 0.160
How religious are you? 0.00 0.00 0.00 0.01 282.29 -0.09 0.925
Category (religious) × Country (US) 0.07 0.14 0.14 0.02 286.88 4.72 <0.001 ***
Category (religious) × Country (Ghana) -0.08 -0.12 -0.12 0.03 301.47 -3.11 0.002 **
Category (religious) × Country (China) 0.04 0.08 0.08 0.02 279.25 2.25 0.025 *
Category (religious) × How religious are you? -0.01 -0.01 -0.01 0.01 290.48 -0.50 0.615
Country (US) × How religious are you? 0.00 0.01 0.01 0.02 278.83 0.20 0.844
Country (Ghana) × How religious are you? 0.03 0.05 0.05 0.02 288.04 1.10 0.273
Country (China) × How religious are you? -0.01 -0.01 -0.01 0.02 273.72 -0.40 0.690
Category (religious) × Country (US) × How religious are you? 0.00 0.00 0.00 0.02 284.45 -0.18 0.861
Category (religious) × Country (Ghana) × How religious are you? 0.01 0.02 0.02 0.02 299.67 0.60 0.549
Category (religious) × Country (China) × How religious are you? 0.00 0.00 0.00 0.02 277.30 0.00 0.998

This analysis suggests that greater religiosity was NOT associated with an increased distinction between religious and fact questions. (Note that this analysis omits participants from Thailand, who did not answer this question about religiosity.)

thb2_demo_impr: “From 1 to 7, how important to you is your religious practice? (1 = not important at all, 7 = of utmost importance)”

r2.7 <- lmer(believeX ~ super_cat * country * thb2_demo_impr_num
             + (1 + super_cat | thb2_subj) + (1 | question),
             data = d2_long %>% 
               filter(country != "Thailand") %>%
               mutate(thb2_demo_impr_num = scale(thb2_demo_impr_num)),
             contrasts = list(country = "contr.sum"))
contrasts dropped from factor country due to missing levelscontrasts dropped from factor country due to missing levelscontrasts dropped from factor country due to missing levelscontrasts dropped from factor country due to missing levels
Parameter β β' β'' Std. Err. df t p
Intercept 0.18 - - 0.02 90.16 10.16 <0.001 ***
Category (religious) 0.12 0.33 0.33 0.02 65.49 7.84 <0.001 ***
Country (US) 0.09 0.17 0.17 0.02 278.70 5.10 <0.001 ***
Country (Ghana) -0.10 -0.15 -0.15 0.03 287.71 -3.38 <0.001 ***
Country (China) 0.04 0.07 0.07 0.02 274.01 1.85 0.066
How important is your religious practice? 0.00 0.00 0.00 0.01 280.79 -0.03 0.976
Category (religious) × Country (US) 0.08 0.14 0.14 0.02 285.40 4.93 <0.001 ***
Category (religious) × Country (Ghana) -0.08 -0.12 -0.12 0.02 300.33 -3.24 0.001 **
Category (religious) × Country (China) 0.05 0.10 0.10 0.02 278.70 2.97 0.003 **
Category (religious) × How important is your religious practice? 0.00 0.00 0.00 0.01 289.09 -0.04 0.966
Country (US) × How important is your religious practice? -0.02 -0.03 -0.03 0.02 276.18 -0.95 0.345
Country (Ghana) × How important is your religious practice? 0.01 0.03 0.03 0.02 286.73 0.61 0.544
Country (China) × How important is your religious practice? 0.00 0.00 0.00 0.02 272.60 -0.07 0.948
Category (religious) × Country (US) × How important is your religious practice? -0.02 -0.04 -0.04 0.02 281.17 -1.58 0.115
Category (religious) × Country (Ghana) × How important is your religious practice? 0.01 0.02 0.02 0.02 298.72 0.62 0.534
Category (religious) × Country (China) × How important is your religious practice? 0.00 0.00 0.00 0.02 276.37 0.00 0.998

This analysis suggests that more importance placed on religious practice was NOT associated with an increased distinction between religious and fact questions. (Note that this analysis omits participants from Thailand, who did not answer this question about religiosity.)

thb2_demowors: “How often do you attend places of worship?”

r2.8 <- lmer(believeX ~ super_cat * country * thb2_demo_wors_num
             + (1 + super_cat | thb2_subj) + (1 | question),
             data = d2_long %>% 
               mutate(thb2_demo_wors_num = scale(thb2_demo_wors_num)))
Parameter β β' β'' Std. Err. df t p
Intercept 0.17 - - 0.02 193.18 8.57 <0.001 ***
Category (religious) 0.13 0.33 0.33 0.02 130.12 7.18 <0.001 ***
Country (Gh.) -0.13 -0.19 -0.19 0.05 371.24 -2.74 0.006 **
Country (Th.) 0.01 0.02 0.02 0.02 368.78 0.60 0.547
Country (Ch.) 0.05 0.09 0.09 0.03 353.94 1.32 0.188
Country (Vt.) -0.03 -0.05 -0.05 0.04 370.89 -0.79 0.432
How often do you attend places of worship? 0.02 0.05 0.05 0.02 367.10 1.10 0.271
Category (religious) × Country (Gh.) -0.09 -0.14 -0.14 0.04 384.82 -2.40 0.017 *
Category (religious) × Country (Th.) 0.01 0.01 0.01 0.02 380.61 0.34 0.731
Category (religious) × Country (Ch.) 0.05 0.09 0.09 0.03 355.77 1.68 0.093
Category (religious) × Country (Vt.) -0.04 -0.06 -0.06 0.03 384.23 -1.13 0.259
Category (religious) × How often do you attend places of worship? 0.01 0.01 0.01 0.01 377.70 0.40 0.686
Country (Gh.) × How often do you attend places of worship? 0.02 0.04 0.04 0.04 371.13 0.61 0.544
Country (Th.) × How often do you attend places of worship? 0.01 0.01 0.01 0.03 370.86 0.31 0.754
Country (Ch.) × How often do you attend places of worship? 0.00 -0.01 -0.01 0.03 355.06 -0.14 0.890
Country (Vt.) × How often do you attend places of worship? -0.01 -0.02 -0.02 0.03 370.81 -0.33 0.745
Category (religious) × Country (Gh.) × How often do you attend places of worship? 0.01 0.02 0.02 0.03 384.62 0.45 0.653
Category (religious) × Country (Th.) × How often do you attend places of worship? 0.02 0.02 0.02 0.03 384.16 0.62 0.539
Category (religious) × Country (Ch.) × How often do you attend places of worship? 0.00 0.00 0.00 0.03 357.55 0.01 0.994
Category (religious) × Country (Vt.) × How often do you attend places of worship? -0.01 -0.01 -0.01 0.03 384.07 -0.25 0.799

This analysis suggests that frequency of attendence was NOT associated with an increased distinction between religious and fact questions.

LS0tCnRpdGxlOiAiVGhpbmsgQmVsaWV2ZSAyIChmcmVlIHJlc3BvbnNlKTogUmVsaWdpb3VzIGFmZmlsaWF0aW9uIGFuZCByZWxpZ2lvc2l0eSIKb3V0cHV0OiAKICBodG1sX25vdGVib29rOgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKLS0tCgpgYGB7ciBzZXR1cH0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGLCBtZXNzYWdlID0gRikKYGBgCgpJbiB0aGlzIG5vdGVib29rIHdlIGNvbnNpZGVyIHRoZSByb2xlIG9mIHJlbGlnaW91cyBhZmZpbGlhdGlvbiBhbmQgcmVsaWdpb3NpdHkgaW4gdGhlIHNlY29uZCAidGhpbmsvYmVsaWV2ZSIgdGFzaywgaW4gd2hpY2ggcGFydGljaXBhbnRzIGNvbXBsZXRlZCBhIHNlcmllcyBvZiBmaWxsLWluLXRoZS1ibGFua3Mgd2l0aCBmcmVlIHJlc3BvbnNlcy4KCgpgYGB7cn0Kc291cmNlKCIuL3NjcmlwdHMvZGVwZW5kZW5jaWVzLlIiKQpzb3VyY2UoIi4vc2NyaXB0cy9jdXN0b21fZnVucy5SIikKc291cmNlKCIuL3NjcmlwdHMvdmFyX3JlY29kZV9jb250cmFzdC5SIikKc291cmNlKCIuL3NjcmlwdHMvZGF0YV9wcmVwLlIiKQpgYGAKCgojIERlbW9ncmFwaGljcwoKRmlyc3QsIGxldCdzIGp1c3QgbG9vayBhdCBob3cgcGVvcGxlIGluIGRpZmZlcmVudCBjb3VudHJpZXMgcmVwbGllZCB0byB0aGUgcmVsZXZhbnQgcXVlc3Rpb25zLiAKCiMjIFJlbGlnaW91cyBhZmZpbGlhdGlvbgoKIyMjIGB0aGIyX2RlbW9fcmVncF8xX1RFWFRgOiAiQXJlIHlvdSBhIHBhcnQgb2YgYW55IHJlbGlnaW91cyBncm91cD8gSWYgeWVzLCB3aGF0IGdyb3VwPyIKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC40fQpkZW1vX3Bsb3RfZnVuKGQyLCBzYW1wbGVfc2l6ZV9kMiwgInRoYjJfcmVsaWdpb24iKSArCiAgbGFicyh4ID0gIkFyZSB5b3UgYSBwYXJ0IG9mIGFueSByZWxpZ2lvdXMgZ3JvdXA/IElmIHllcywgd2hhdCBncm91cD8iLCAKICAgICAgIHkgPSAicHJvcG9ydGlvbiIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpCmBgYAoKIyMjIGAuLi5fZGVtb19ybGduYDogIldoYXQgcmVsaWdpb24gZG8geW91IHByYWN0aWNlLCBpZiBhbnk/IgoKVGhpcyBxdWVzdGlvbiB3YXMgaW5jbHVkZWQgaW4gdGhlIGJpZ2dlciAicGFja2V0IiAobm90IGluIHRoZSAiVGhpbmsgQmVsaWV2ZSIgc3VydmV5IGl0c2VsZikuIEl0IHdhcyBvcGVuLXJlc3BvbnNlLCBidXQgaGVyZSBJJ3ZlIGRvbmUgbXkgYmVzdCB0byBjb2RlIHRoZSByZXNwb25lcyBhcyAiQ2hyaXN0aWFuLCIgIkJ1ZGRoaXN0LCIgIk90aGVyIHJlbGlnaW91cywiIG9yICJOb3QgcmVsaWdpb3VzLiIKClNlZW1zIHRvIGhhdmUgYmVlbiBvbWl0dGVkIGluIEdoYW5hPwoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjR9CmRlbW9fcGxvdF9mdW4oZDIsIHNhbXBsZV9zaXplX2QyLCAicmVsaWdpb24iKSArCiAgbGFicyh4ID0gIldoYXQgcmVsaWdpb24gZG8geW91IHByYWN0aWNlLCBpZiBhbnk/IiwgCiAgICAgICB5ID0gInByb3BvcnRpb24iKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKQpgYGAKCiMjIyBDb21iaW5pbmcgYHRoYjJfZGVtb19yZWdwXzFfVEVYVGAgYW5kIGAuLi5fZGVtb19ybGduYAoKSGVyZSBJJ2xsIGNvdW50IHNvbWVvbmUgYXMgIkNocmlzdGlhbiIgaWYgSSBjb2RlZCB0aGVpciByZXNwb25zZSB0byAqZWl0aGVyKiBgdGhiMl9kZW1vX3JlZ3BfMV9URVhUYCBvciBgLi4uX2RlbW9fcmxnbmAgYXMgIkNocmlzdGlhbiIgKGV0Yy4pLgoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjR9CmRlbW9fcGxvdF9mdW4oZDIgJT4lIAogICAgICAgICAgICAgICAgbXV0YXRlKG5ld19yZWxpZyA9IGNhc2Vfd2hlbigKICAgICAgICAgICAgICAgICAgdGhiMl9yZWxpZ2lvbiA9PSAiQ2hyaXN0aWFuIiB8IAogICAgICAgICAgICAgICAgICAgIHJlbGlnaW9uID09ICJDaHJpc3RpYW4iIH4gIkNocmlzdGlhbiIsCiAgICAgICAgICAgICAgICAgIHRoYjJfcmVsaWdpb24gPT0gIkJ1ZGRoaXN0IiB8IAogICAgICAgICAgICAgICAgICAgIHJlbGlnaW9uID09ICJCdWRkaGlzdCIgfiAiQnVkZGhpc3QiLAogICAgICAgICAgICAgICAgICB0aGIyX3JlbGlnaW9uID09ICJPdGhlciIgfCAKICAgICAgICAgICAgICAgICAgICByZWxpZ2lvbiA9PSAiT3RoZXIgcmVsaWdpb3VzIiB+ICJPdGhlciByZWxpZ2lvdXMiLAogICAgICAgICAgICAgICAgICByZWxpZ2lvbiA9PSAiTm90IHJlbGlnaW91cyIgfiAiTm90IHJlbGlnaW91cyIsCiAgICAgICAgICAgICAgICAgIFRSVUUgfiBOQV9jaGFyYWN0ZXJfKSkgJT4lIAogICAgICAgICAgICAgICAgbXV0YXRlKG5ld19yZWxpZyA9IGZhY3RvcihuZXdfcmVsaWcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJCdWRkaGlzdCIsICJDaHJpc3RpYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciByZWxpZ2lvdXMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm90IHJlbGlnaW91cyIpKSksIAogICAgICAgICAgICAgIHNhbXBsZV9zaXplX2QyLCAibmV3X3JlbGlnIikgKwogIGxhYnMoeCA9ICJJbmZlcnJlZCByZWxpZ2lvbiIsIAogICAgICAgeSA9ICJwcm9wb3J0aW9uIikgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSkKYGBgCgoKIyMgUmVsaWdpb3NpdHkKCiMjIyBgdGhiMl9kZW1vX3JlZ3BgOiAiQXJlIHlvdSBhIHBhcnQgb2YgYW55IHJlbGlnaW91cyBncm91cD8iCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNH0KZGVtb19wbG90X2Z1bihkMiwgc2FtcGxlX3NpemVfZDIsICJ0aGIyX2RlbW9fcmVncCIpICsKICBsYWJzKHggPSAiQXJlIHlvdSBhIHBhcnQgb2YgYW55IHJlbGlnaW91cyBncm91cD8iLCAKICAgICAgIHkgPSAicHJvcG9ydGlvbiIpCmBgYAoKIyMjIGB0aGIyX2RlbW9fcmVseWA6ICJGcm9tIDEgdG8gNywgaG93IHJlbGlnaW91cyBhcmUgeW91PyAoMSA9IG5vdCByZWxpZ2lvdXMgYXQgYWxsLCA3ID0KZXh0cmVtZWx5IHJlbGlnaW91cykiCgpTZWVtcyB0byBoYXZlIGJlZW4gb21pdHRlZCBpbiBUaGFpbGFuZD8KCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC40fQpkZW1vX3Bsb3RfZnVuKGQyLCBzYW1wbGVfc2l6ZV9kMiwgInRoYjJfZGVtb19yZWx5IikgKwogIGxhYnMoeCA9ICJGcm9tIDEgdG8gNywgaG93IHJlbGlnaW91cyBhcmUgeW91PyIsIAogICAgICAgeSA9ICJwcm9wb3J0aW9uIikKYGBgCgojIyMgYHRoYjJfZGVtb19pbXByYDogIkZyb20gMSB0byA3LCBob3cgaW1wb3J0YW50IHRvIHlvdSBpcyB5b3VyIHJlbGlnaW91cyBwcmFjdGljZT8gICgxID0gbm90IGltcG9ydGFudCBhdCBhbGwsIDcgPSBvZiB1dG1vc3QgaW1wb3J0YW5jZSkiCgpTZWVtcyB0byBoYXZlIGJlZW4gb21pdHRlZCBpbiBUaGFpbGFuZD8KCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC40fQpkZW1vX3Bsb3RfZnVuKGQyLCBzYW1wbGVfc2l6ZV9kMiwgInRoYjJfZGVtb19pbXByIikgKwogIGxhYnMoeCA9ICJGcm9tIDEgdG8gNywgaG93IGltcG9ydGFudCB0byB5b3UgaXMgeW91ciByZWxpZ2lvdXMgcHJhY3RpY2U/IiwgCiAgICAgICB5ID0gInByb3BvcnRpb24iKQpgYGAKCiMjIyBgdGhiMl9kZW1vX3dvcnNgOiAiSG93IG9mdGVuIGRvIHlvdSBhdHRlbmQgcGxhY2VzIG9mIHdvcnNoaXA/IgoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjR9CmRlbW9fcGxvdF9mdW4oZDIsIHNhbXBsZV9zaXplX2QyLCAidGhiMl9kZW1vX3dvcnMiKSArCiAgbGFicyh4ID0gIkhvdyBvZnRlbiBkbyB5b3UgYXR0ZW5kIHBsYWNlcyBvZiB3b3JzaGlwPyIsIAogICAgICAgeSA9ICJwcm9wb3J0aW9uIikgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSkKYGBgCgojIyMgYHRoYjJfZGVtb19iZ29kYDogIldoYXQgYmVzdCBkZXNjcmliZXMgeW91ciBsZXZlbCBvZiBiZWxpZWYgaW4gR29kPyIKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC40fQpkZW1vX3Bsb3RfZnVuKGQyLCBzYW1wbGVfc2l6ZV9kMiwgInRoYjJfZGVtb19iZ29kIikgKwogIGxhYnMoeCA9ICJXaGF0IGJlc3QgZGVzY3JpYmVzIHlvdXIgbGV2ZWwgb2YgYmVsaWVmIGluIEdvZD8iLCAKICAgICAgIHkgPSAicHJvcG9ydGlvbiIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpCmBgYAoKIyMjIGB0aGIyX2RlbW9fYmJ1aGA6ICJXaGF0IGJlc3QgZGVzY3JpYmVzIHlvdXIgbGV2ZWwgb2YgYmVsaWVmIGluIEJ1ZGRoYT8iCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNH0KZGVtb19wbG90X2Z1bihkMiwgc2FtcGxlX3NpemVfZDIsICJ0aGIyX2RlbW9fYmJ1aCIpICsKICBsYWJzKHggPSAiV2hhdCBiZXN0IGRlc2NyaWJlcyB5b3VyIGxldmVsIG9mIGJlbGllZiBpbiBCdWRkaGE/IiwgCiAgICAgICB5ID0gInByb3BvcnRpb24iKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKQpgYGAKCiMjIyBgdGhiMl9kZW1vX2Jvc3BgOiAiV2hhdCBiZXN0IGRlc2NyaWJlcyB5b3VyIGxldmVsIG9mIGJlbGllZiBpbiBhbm90aGVyIHNwaXJpdHVhbCBiZWluZyAob3RoZXIgdGhhbiBHb2Qgb3IgQnVkZGhhKT8iCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNH0KZGVtb19wbG90X2Z1bihkMiwgc2FtcGxlX3NpemVfZDIsICJ0aGIyX2RlbW9fYm9zcCIpICsKICBsYWJzKHggPSAiV2hhdCBiZXN0IGRlc2NyaWJlcyB5b3VyIGxldmVsIG9mIGJlbGllZiBpbiBhbm90aGVyIHNwaXJpdHVhbCBiZWluZyAob3RoZXIgdGhhbiBHb2Qgb3IgQnVkZGhhKT8iLCAKICAgICAgIHkgPSAicHJvcG9ydGlvbiIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpCmBgYAoKIyMjIGB0aGIyX2RlbW9fYXRzbmA6ICJXaGF0IGJlc3QgZGVzY3JpYmVzIHlvdXIgYXR0aXR1ZGUgdG93YXJkcyB0aGUgc3VwZXJuYXR1cmFsPwoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjR9CmRlbW9fcGxvdF9mdW4oZDIsIHNhbXBsZV9zaXplX2QyLCAidGhiMl9kZW1vX2F0c24iKSArCiAgbGFicyh4ID0gIldoYXQgYmVzdCBkZXNjcmliZXMgeW91ciBhdHRpdHVkZSB0b3dhcmRzIHRoZSBzdXBlcm5hdHVyYWw/IiwgCiAgICAgICB5ID0gInByb3BvcnRpb24iKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShsYWJlbHMgPSAxOjUpCmBgYAoKUmVzcG9uc2Ugb3B0aW9uczoKCjEuICJUaGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzIHN1cGVybmF0dXJhbCBmb3JjZXMgb3IgYmVpbmdzIgoyLiAiV2UgY2Fubm90IGtub3cgaWYgdGhlcmUgYXJlIHN1cGVybmF0dXJhbCBmb3JjZXMgYW5kIGJlaW5ncyIKMy4gIlRoZXJlIG1pZ2h0IGJlIHN1cGVybmF0dXJhbCBmb3JjZXMgYW5kIGJlaW5ncyIKNC4gIlN1cGVybmF0dXJhbCBmb3JjZXMgYW5kIGJlaW5ncyBleGlzdCBidXQgd2UgY2Fubm90IGtub3cgd2hhdCB0aGV5IGFyZSBsaWtlIgo1LiAiVGhlcmUgZGVmaW5pdGVseSBhcmUgc3VwZXJuYXR1cmFsIGZvcmNlcyBhbmQgYmVpbmdzIgoKIyMjIGB0aGIyX2RlbW9faW1zbmA6ICJGcm9tIDEgdG8gNywgaG93IGltcG9ydGFudCB0byB5b3UgaXMgeW91ciBhdHRpdHVkZSB0b3dhcmQgdGhlIHN1cGVybmF0dXJhbD8gKDEgPSBub3QgaW1wb3J0YW50IGF0IGFsbCwgNyA9IG9mIHV0bW9zdCBpbXBvcnRhbmNlKSIKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC40fQpkZW1vX3Bsb3RfZnVuKGQyLCBzYW1wbGVfc2l6ZV9kMiwgInRoYjJfZGVtb19pbXNuIikgKwogIGxhYnMoeCA9ICJGcm9tIDEgdG8gNywgaG93IGltcG9ydGFudCB0byB5b3UgaXMgeW91ciBhdHRpdHVkZSB0b3dhcmQgdGhlIHN1cGVybmF0dXJhbD8iLCAKICAgICAgIHkgPSAicHJvcG9ydGlvbiIpCmBgYAoKCiMgQW5hbHlzZXMKCk5vdywgbGV0J3MgbG9vayBhdCBob3cgcmVzcG9uc2VzIHRvIG91ciB0aGluay9iZWxpZXZlIHF1ZXN0aW9ucyBtaWdodCBoYXZlIHZhcmllZCBkZXBlbmRpbmcgb24gcmVsaWdpb24vcmVsaWdpb3NpdHkuIEZvciBub3csIEknbGwganVzdCBmb2N1cyBvbiBhIGNvdXBsZSBvZiB2YXJpYWJsZXMgdGhhdCBzZWVtIHRvIGhhdmUgYmVlbiBhbnN3ZXJlZCBpbiByZWFzb25hYmxlIHdheXMuCgojIyBSZWxpZ2lvdXMgYWZmaWxpYXRpb24KCmBgYHtyfQpkMl90ZW1wIDwtIGQyX2xvbmcgJT4lCiAgIyBmaWx0ZXIoY291bnRyeSA9PSAiVVMiKSAlPiUKICBtdXRhdGUocmVsaWdfY2F0ID0gY2FzZV93aGVuKAogICAgdGhiMl9yZWxpZ2lvbiA9PSAiQ2hyaXN0aWFuIiB8IHJlbGlnaW9uID09ICJDaHJpc3RpYW4iIH4gIkNocmlzdGlhbiIsCiAgICBncmVwbCgiT3RoZXIiLCB0aGIyX3JlbGlnaW9uKSB8IAogICAgICBncmVwbCgiT3RoZXIiLCByZWxpZ2lvbikgfAogICAgICBncmVwbCgiQnVkZGgiLCB0aGIyX3JlbGlnaW9uKSB8IAogICAgICBncmVwbCgiQnVkZGgiLCByZWxpZ2lvbikgfiAiQnVkZGhpc3QvT3RoZXIiLAogICAgdGhiMl9yZWxpZ2lvbiA9PSAiTm90IHJlbGlnaW91cyIgfCBpcy5uYSh0aGIyX3JlbGlnaW9uKSB8CiAgICAgIGlzLm5hKHJlbGlnaW9uKSB+ICJOb3QgcmVsaWdpb3VzIiwKICAgIFRSVUUgfiBOQV9jaGFyYWN0ZXJfKSkgJT4lCiAgbXV0YXRlKHJlbGlnX2NhdCA9IGZhY3RvcihyZWxpZ19jYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJDaHJpc3RpYW4iLCAiTm90IHJlbGlnaW91cyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQnVkZGhpc3QvT3RoZXIiKSkpCgpzYW1wbGVfc2l6ZV9kMl90ZW1wIDwtIGQyX3RlbXAgJT4lCiAgZGlzdGluY3QoY291bnRyeSwgdGhiMl9zdWJqLCByZWxpZ19jYXQpICU+JQogIGNvdW50KGNvdW50cnksIHJlbGlnX2NhdCkgJT4lCiAgYXJyYW5nZShjb3VudHJ5LCByZWxpZ19jYXQpICU+JQogIG11dGF0ZShsYWIgPSBwYXN0ZTAoY291bnRyeSwgIjogIiwgcmVsaWdfY2F0LCAiIChuPSIsIG4sICIpIiksCiAgICAgICAgIG9yZGVyID0gMTpucm93KC4pLAogICAgICAgICBsYWIgPSByZW9yZGVyKGxhYiwgb3JkZXIpKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS4yfQpkMl90ZW1wICU+JSAKICBzZWxlY3QoLW9yZGVyKSAlPiUKICBsZWZ0X2pvaW4oc2FtcGxlX3NpemVfZDJfdGVtcCkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc3VwZXJfY2F0LCAKICAgICAgICAgICAgICMgcHV0IE5BcyBvbiB0b3Agb2YgYmFyCiAgICAgICAgICAgICBmaWxsID0gcmVzcG9uc2VYX2NhdCkpICsKICBmYWNldF93cmFwKC4gfiBsYWIsIG5jb2wgPSAzKSArICMsIHNjYWxlcyA9ICJmcmVlIiwgc3BhY2UgPSAiZnJlZSIpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIiwgYWxwaGEgPSAwLjcsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDAuMSkgKwogICMgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC41LCBsdHkgPSAyKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiKSArCiAgbGFicyh4ID0gImNhdGVnb3J5IiwgeSA9ICJwcm9wb3J0aW9uIiwgZmlsbCA9ICJyZXNwb25zZSIpCmBgYAoKYGBge3J9CnIyLjlfdXMgPC0gbG1lcihiZWxpZXZlIH4gc3VwZXJfY2F0ICogcmVsaWdfY2F0CiAgICAgICAgICAgICAgICAjICsgKDEgKyBzdXBlcl9jYXQgfCB0aGIyX3N1YmopICsgKDEgfCBxdWVzdGlvbiksICMgZmFpbGVkIHRvIGNvbnZlcmdlIAogICAgICAgICAgICAgICAgIyArICgxICsgc3VwZXJfY2F0IHx8IHRoYjJfc3ViaikgKyAoMSB8IHF1ZXN0aW9uKSwgIyBmYWlsZWQgdG8gY29udmVyZ2UgCiAgICAgICAgICAgICAgICArICgxIHwgdGhiMl9zdWJqKSArICgxIHwgcXVlc3Rpb24pLAogICAgICAgICAgICAgICAgZGF0YSA9IGQyX3RlbXAgJT4lCiAgICAgICAgICAgICAgICAgIGZpbHRlcihjb3VudHJ5ID09ICJVUyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgcmVsaWdfY2F0ICVpbiUgYygiQ2hyaXN0aWFuIiwgIk5vdCByZWxpZ2lvdXMiKSksCiAgICAgICAgICAgICAgICBjb250cmFzdHMgPSBsaXN0KHJlbGlnX2NhdCA9ICJjb250ci5zdW0iKSkKYGBgCgpgYGB7cn0KcmVndGFiX2Z1bihyMi45X3VzLCAKICAgICAgICAgICBwcmVkaWN0b3JfdmFyMSA9ICJyZWxpZ19jYXQxIiwgCiAgICAgICAgICAgcHJlZGljdG9yX25hbWUxID0gIlJlbGlnaW91cyBhZmZpbGlhdGlvbiAoQ2hyaXN0aWFuIHZzLiBub3QgcmVsaWdpb3VzKSIpICU+JQogIHJlZ3RhYl9zdHlsZV9mdW4ocm93X2VtcGggPSA0KQpgYGAKCgojIyBSZWxpZ2lvc2l0eQoKIyMjIGB0aGIyX2RlbW9fcmVseWA6IOKAnEZyb20gMSB0byA3LCBob3cgcmVsaWdpb3VzIGFyZSB5b3U/ICgxID0gbm90IHJlbGlnaW91cyBhdCBhbGwsIDcgPSBleHRyZW1lbHkgcmVsaWdpb3VzKeKAnQoKYGBge3IsIGVjaG8gPSBUfQpyMi42IDwtIGxtZXIoYmVsaWV2ZVggfiBzdXBlcl9jYXQgKiBjb3VudHJ5ICogdGhiMl9kZW1vX3JlbHlfbnVtCiAgICAgICAgICAgICArICgxICsgc3VwZXJfY2F0IHwgdGhiMl9zdWJqKSArICgxIHwgcXVlc3Rpb24pLAogICAgICAgICAgICAgZGF0YSA9IGQyX2xvbmcgJT4lIAogICAgICAgICAgICAgICBmaWx0ZXIoY291bnRyeSAhPSAiVGhhaWxhbmQiKSAlPiUKICAgICAgICAgICAgICAgbXV0YXRlKHRoYjJfZGVtb19yZWx5X251bSA9IHNjYWxlKHRoYjJfZGVtb19yZWx5X251bSkpLAogICAgICAgICAgICAgY29udHJhc3RzID0gbGlzdChjb3VudHJ5ID0gImNvbnRyLnN1bSIpKQpgYGAKCmBgYHtyfQpyZWd0YWJfZnVuKHIyLjYsIHN0ZF9iZXRhID0gVCwgCiAgICAgICAgICAgY291bnRyeV92YXIxID0gImNvdW50cnkxIiwgY291bnRyeV9uYW1lMSA9ICJDb3VudHJ5IChVUykiLAogICAgICAgICAgIGNvdW50cnlfdmFyMiA9ICJjb3VudHJ5MiIsIGNvdW50cnlfbmFtZTIgPSAiQ291bnRyeSAoR2hhbmEpIiwKICAgICAgICAgICBjb3VudHJ5X3ZhcjMgPSAiY291bnRyeTMiLCBjb3VudHJ5X25hbWUzID0gIkNvdW50cnkgKENoaW5hKSIsCiAgICAgICAgICAgcHJlZGljdG9yX3ZhcjEgPSAidGhiMl9kZW1vX3JlbHlfbnVtIiwgCiAgICAgICAgICAgcHJlZGljdG9yX25hbWUxID0gIkhvdyByZWxpZ2lvdXMgYXJlIHlvdT8iKSAlPiUgCiAgcmVndGFiX3N0eWxlX2Z1bihyb3dfZW1waCA9IGMoMTAsIDE0OjE2KSkKYGBgCgpUaGlzIGFuYWx5c2lzIHN1Z2dlc3RzIHRoYXQgZ3JlYXRlciByZWxpZ2lvc2l0eSB3YXMgTk9UIGFzc29jaWF0ZWQgd2l0aCBhbiBpbmNyZWFzZWQgZGlzdGluY3Rpb24gYmV0d2VlbiByZWxpZ2lvdXMgYW5kIGZhY3QgcXVlc3Rpb25zLiAoTm90ZSB0aGF0IHRoaXMgYW5hbHlzaXMgb21pdHMgcGFydGljaXBhbnRzIGZyb20gVGhhaWxhbmQsIHdobyBkaWQgbm90IGFuc3dlciB0aGlzIHF1ZXN0aW9uIGFib3V0IHJlbGlnaW9zaXR5LikKCmBgYHtyfQpkMl9sb25nICU+JSAKICBmaWx0ZXIoY291bnRyeSAhPSAiVGhhaWxhbmQiKSAlPiUKICBncm91cF9ieShjb3VudHJ5LCB0aGIyX3N1YmosIHRoYjJfZGVtb19yZWx5X251bSwgc3VwZXJfY2F0KSAlPiUKICBzdW1tYXJpc2UoYmVsaWV2ZV9wcm9wID0gbWVhbihiZWxpZXZlWCwgbmEucm0gPSBUKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIGdncGxvdChhZXMoeCA9IHRoYjJfZGVtb19yZWx5X251bSwgeSA9IGJlbGlldmVfcHJvcCwgY29sb3IgPSBzdXBlcl9jYXQpKSArCiAgZmFjZXRfZ3JpZCguIH4gY291bnRyeSkgKwogIGdlb21faml0dGVyKGFscGhhID0gMC4yLCB3aWR0aCA9IDAuMSwgaGVpZ2h0ID0gMC4wMikgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gMDo2LCBsYWJlbHMgPSBsZXZlbHMoZDIkdGhiMl9kZW1vX3JlbHkpKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIpICsKICBsYWJzKHggPSAiSG93IHJlbGlnaW91cyBhcmUgeW91PyIsIHkgPSAiUHJvcG9ydGlvbiAnYmVsaWV2ZVgnIHJlc3BvbnNlcyIsCiAgICAgICBjb2xvciA9ICJDYXRlZ29yeSIpCmBgYAoKYGBge3J9CmQyX2xvbmcgJT4lIAogIGZpbHRlcihjb3VudHJ5ICE9ICJUaGFpbGFuZCIpICU+JQogIGdyb3VwX2J5KGNvdW50cnksIHRoYjJfc3ViaiwgdGhiMl9kZW1vX3JlbHlfbnVtLCBzdXBlcl9jYXQpICU+JQogIHN1bW1hcmlzZShiZWxpZXZlX3Byb3AgPSBtZWFuKGJlbGlldmVYLCBuYS5ybSA9IFQpKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgc3ByZWFkKHN1cGVyX2NhdCwgYmVsaWV2ZV9wcm9wKSAlPiUKICBtdXRhdGUoZGlmZiA9IHJlbGlnaW91cyAtIGZhY3QpICU+JQogIGdncGxvdChhZXMoeCA9IHRoYjJfZGVtb19yZWx5X251bSwgeSA9IGRpZmYpKSArCiAgZmFjZXRfZ3JpZCguIH4gY291bnRyeSkgKwogIGdlb21faml0dGVyKGFscGhhID0gMC4yLCB3aWR0aCA9IDAuMSwgaGVpZ2h0ID0gMC4wMikgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gMDo2LCBsYWJlbHMgPSBsZXZlbHMoZDIkdGhiMl9kZW1vX3JlbHkpKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIpICsKICBsYWJzKHggPSAiSG93IHJlbGlnaW91cyBhcmUgeW91PyIsIAogICAgICAgeSA9ICJEaWZmZXJlbmNlIGluIHByb3BvcnRpb24gJ2JlbGlldmVYJyByZXNwb25zZXNcbihyZWxpZ2lvdXMgcXVlc3Rpb25zIC0gZmFjdCBxdWVzdGlvbnMpIiwKICAgICAgIGNvbG9yID0gIkNhdGVnb3J5IikKYGBgCgojIyMgYHRoYjJfZGVtb19pbXByYDogIkZyb20gMSB0byA3LCBob3cgaW1wb3J0YW50IHRvIHlvdSBpcyB5b3VyIHJlbGlnaW91cyBwcmFjdGljZT8gICgxID0gbm90IGltcG9ydGFudCBhdCBhbGwsIDcgPSBvZiB1dG1vc3QgaW1wb3J0YW5jZSkiCgpgYGB7ciwgZWNobyA9IFR9CnIyLjcgPC0gbG1lcihiZWxpZXZlWCB+IHN1cGVyX2NhdCAqIGNvdW50cnkgKiB0aGIyX2RlbW9faW1wcl9udW0KICAgICAgICAgICAgICsgKDEgKyBzdXBlcl9jYXQgfCB0aGIyX3N1YmopICsgKDEgfCBxdWVzdGlvbiksCiAgICAgICAgICAgICBkYXRhID0gZDJfbG9uZyAlPiUgCiAgICAgICAgICAgICAgIGZpbHRlcihjb3VudHJ5ICE9ICJUaGFpbGFuZCIpICU+JQogICAgICAgICAgICAgICBtdXRhdGUodGhiMl9kZW1vX2ltcHJfbnVtID0gc2NhbGUodGhiMl9kZW1vX2ltcHJfbnVtKSksCiAgICAgICAgICAgICBjb250cmFzdHMgPSBsaXN0KGNvdW50cnkgPSAiY29udHIuc3VtIikpCmBgYAoKYGBge3J9CnJlZ3RhYl9mdW4ocjIuNywgc3RkX2JldGEgPSBULCAKICAgICAgICAgICBjb3VudHJ5X3ZhcjEgPSAiY291bnRyeTEiLCBjb3VudHJ5X25hbWUxID0gIkNvdW50cnkgKFVTKSIsCiAgICAgICAgICAgY291bnRyeV92YXIyID0gImNvdW50cnkyIiwgY291bnRyeV9uYW1lMiA9ICJDb3VudHJ5IChHaGFuYSkiLAogICAgICAgICAgIGNvdW50cnlfdmFyMyA9ICJjb3VudHJ5MyIsIGNvdW50cnlfbmFtZTMgPSAiQ291bnRyeSAoQ2hpbmEpIiwKICAgICAgICAgICBwcmVkaWN0b3JfdmFyMSA9ICJ0aGIyX2RlbW9faW1wcl9udW0iLCAKICAgICAgICAgICBwcmVkaWN0b3JfbmFtZTEgPSAiSG93IGltcG9ydGFudCBpcyB5b3VyIHJlbGlnaW91cyBwcmFjdGljZT8iKSAlPiUgCiAgcmVndGFiX3N0eWxlX2Z1bihyb3dfZW1waCA9IGMoMTAsIDE0OjE2KSkKYGBgCgpUaGlzIGFuYWx5c2lzIHN1Z2dlc3RzIHRoYXQgbW9yZSBpbXBvcnRhbmNlIHBsYWNlZCBvbiByZWxpZ2lvdXMgcHJhY3RpY2Ugd2FzIE5PVCBhc3NvY2lhdGVkIHdpdGggYW4gaW5jcmVhc2VkIGRpc3RpbmN0aW9uIGJldHdlZW4gcmVsaWdpb3VzIGFuZCBmYWN0IHF1ZXN0aW9ucy4gKE5vdGUgdGhhdCB0aGlzIGFuYWx5c2lzIG9taXRzIHBhcnRpY2lwYW50cyBmcm9tIFRoYWlsYW5kLCB3aG8gZGlkIG5vdCBhbnN3ZXIgdGhpcyBxdWVzdGlvbiBhYm91dCByZWxpZ2lvc2l0eS4pCgpgYGB7cn0KZDJfbG9uZyAlPiUgCiAgZmlsdGVyKGNvdW50cnkgIT0gIlRoYWlsYW5kIikgJT4lCiAgZ3JvdXBfYnkoY291bnRyeSwgdGhiMl9zdWJqLCB0aGIyX2RlbW9faW1wcl9udW0sIHN1cGVyX2NhdCkgJT4lCiAgc3VtbWFyaXNlKGJlbGlldmVfcHJvcCA9IG1lYW4oYmVsaWV2ZVgsIG5hLnJtID0gVCkpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSB0aGIyX2RlbW9faW1wcl9udW0sIHkgPSBiZWxpZXZlX3Byb3AsIGNvbG9yID0gc3VwZXJfY2F0KSkgKwogIGZhY2V0X2dyaWQoLiB+IGNvdW50cnkpICsKICBnZW9tX2ppdHRlcihhbHBoYSA9IDAuMiwgd2lkdGggPSAwLjEsIGhlaWdodCA9IDAuMDIpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IDA6NiwgbGFiZWxzID0gbGV2ZWxzKGQyJHRoYjJfZGVtb19pbXByKSkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiKSArCiAgbGFicyh4ID0gIkhvdyBpbXBvcnRhbnQgaXMgeW91ciByZWxpZ2lvdXMgcHJhY3RpY2U/IiwgeSA9ICJQcm9wb3J0aW9uICdiZWxpZXZlWCcgcmVzcG9uc2VzIiwKICAgICAgIGNvbG9yID0gIkNhdGVnb3J5IikKYGBgCgpgYGB7cn0KZDJfbG9uZyAlPiUgCiAgZmlsdGVyKGNvdW50cnkgIT0gIlRoYWlsYW5kIikgJT4lCiAgZ3JvdXBfYnkoY291bnRyeSwgdGhiMl9zdWJqLCB0aGIyX2RlbW9faW1wcl9udW0sIHN1cGVyX2NhdCkgJT4lCiAgc3VtbWFyaXNlKGJlbGlldmVfcHJvcCA9IG1lYW4oYmVsaWV2ZVgsIG5hLnJtID0gVCkpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBzcHJlYWQoc3VwZXJfY2F0LCBiZWxpZXZlX3Byb3ApICU+JQogIG11dGF0ZShkaWZmID0gcmVsaWdpb3VzIC0gZmFjdCkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gdGhiMl9kZW1vX2ltcHJfbnVtLCB5ID0gZGlmZikpICsKICBmYWNldF9ncmlkKC4gfiBjb3VudHJ5KSArCiAgZ2VvbV9qaXR0ZXIoYWxwaGEgPSAwLjIsIHdpZHRoID0gMC4xLCBoZWlnaHQgPSAwLjAyKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSAwOjYsIGxhYmVscyA9IGxldmVscyhkMiR0aGIyX2RlbW9faW1wcikpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIikgKwogIGxhYnMoeCA9ICJIb3cgaW1wb3J0YW50IGlzIHlvdXIgcmVsaWdpb3VzIHByYWN0aWNlPyIsIAogICAgICAgeSA9ICJEaWZmZXJlbmNlIGluIHByb3BvcnRpb24gJ2JlbGlldmVYJyByZXNwb25zZXNcbihyZWxpZ2lvdXMgcXVlc3Rpb25zIC0gZmFjdCBxdWVzdGlvbnMpIiwKICAgICAgIGNvbG9yID0gIkNhdGVnb3J5IikKYGBgCgojIyMgYHRoYjJfZGVtb3dvcnNgOiAiSG93IG9mdGVuIGRvIHlvdSBhdHRlbmQgcGxhY2VzIG9mIHdvcnNoaXA/IgoKYGBge3IsIGVjaG8gPSBUfQpyMi44IDwtIGxtZXIoYmVsaWV2ZVggfiBzdXBlcl9jYXQgKiBjb3VudHJ5ICogdGhiMl9kZW1vX3dvcnNfbnVtCiAgICAgICAgICAgICArICgxICsgc3VwZXJfY2F0IHwgdGhiMl9zdWJqKSArICgxIHwgcXVlc3Rpb24pLAogICAgICAgICAgICAgZGF0YSA9IGQyX2xvbmcgJT4lIAogICAgICAgICAgICAgICBtdXRhdGUodGhiMl9kZW1vX3dvcnNfbnVtID0gc2NhbGUodGhiMl9kZW1vX3dvcnNfbnVtKSkpCmBgYAoKYGBge3J9CnJlZ3RhYl9mdW4ocjIuOCwgc3RkX2JldGEgPSBULCAKICAgICAgICAgICBwcmVkaWN0b3JfdmFyMSA9ICJ0aGIyX2RlbW9fd29yc19udW0iLCAKICAgICAgICAgICBwcmVkaWN0b3JfbmFtZTEgPSAiSG93IG9mdGVuIGRvIHlvdSBhdHRlbmQgcGxhY2VzIG9mIHdvcnNoaXA/IikgJT4lIAogIHJlZ3RhYl9zdHlsZV9mdW4ocm93X2VtcGggPSBjKDEyLCAxNzoyMCkpCmBgYAoKVGhpcyBhbmFseXNpcyBzdWdnZXN0cyB0aGF0IGZyZXF1ZW5jeSBvZiBhdHRlbmRlbmNlIHdhcyBOT1QgYXNzb2NpYXRlZCB3aXRoIGFuIGluY3JlYXNlZCBkaXN0aW5jdGlvbiBiZXR3ZWVuIHJlbGlnaW91cyBhbmQgZmFjdCBxdWVzdGlvbnMuIAoKYGBge3J9CmQyX2xvbmcgJT4lIAogIGdyb3VwX2J5KGNvdW50cnksIHRoYjJfc3ViaiwgdGhiMl9kZW1vX3dvcnNfbnVtLCBzdXBlcl9jYXQpICU+JQogIHN1bW1hcmlzZShiZWxpZXZlX3Byb3AgPSBtZWFuKGJlbGlldmVYLCBuYS5ybSA9IFQpKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gdGhiMl9kZW1vX3dvcnNfbnVtLCB5ID0gYmVsaWV2ZV9wcm9wLCBjb2xvciA9IHN1cGVyX2NhdCkpICsKICBmYWNldF9ncmlkKC4gfiBjb3VudHJ5KSArCiAgZ2VvbV9qaXR0ZXIoYWxwaGEgPSAwLjIsIHdpZHRoID0gMC4xLCBoZWlnaHQgPSAwLjAyKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSAwOjQsIGxhYmVscyA9IGxldmVscyhkMiR0aGIyX2RlbW9fd29ycykpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsKICBsYWJzKHggPSAiSG93IG9mdGVuIGRvIHlvdSBhdHRlbmQgcGxhY2VzIG9mIHdvcnNoaXA/IiwgCiAgICAgICB5ID0gIlByb3BvcnRpb24gJ2JlbGlldmVYJyByZXNwb25zZXMiLAogICAgICAgY29sb3IgPSAiQ2F0ZWdvcnkiKQpgYGAKCmBgYHtyfQpkMl9sb25nICU+JSAKICBncm91cF9ieShjb3VudHJ5LCB0aGIyX3N1YmosIHRoYjJfZGVtb193b3JzX251bSwgc3VwZXJfY2F0KSAlPiUKICBzdW1tYXJpc2UoYmVsaWV2ZV9wcm9wID0gbWVhbihiZWxpZXZlWCwgbmEucm0gPSBUKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIHNwcmVhZChzdXBlcl9jYXQsIGJlbGlldmVfcHJvcCkgJT4lCiAgbXV0YXRlKGRpZmYgPSByZWxpZ2lvdXMgLSBmYWN0KSAlPiUKICBnZ3Bsb3QoYWVzKHggPSB0aGIyX2RlbW9fd29yc19udW0sIHkgPSBkaWZmKSkgKwogIGZhY2V0X2dyaWQoLiB+IGNvdW50cnkpICsKICBnZW9tX2ppdHRlcihhbHBoYSA9IDAuMiwgd2lkdGggPSAwLjEsIGhlaWdodCA9IDAuMDIpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IDA6NCwgbGFiZWxzID0gbGV2ZWxzKGQyJHRoYjJfZGVtb193b3JzKSkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSkgKwogIGxhYnMoeCA9ICJIb3cgb2Z0ZW4gZG8geW91IGF0dGVuZCBwbGFjZXMgb2Ygd29yc2hpcD8iLCAKICAgICAgIHkgPSAiRGlmZmVyZW5jZSBpbiBwcm9wb3J0aW9uICdiZWxpZXZlWCcgcmVzcG9uc2VzXG4ocmVsaWdpb3VzIHF1ZXN0aW9ucyAtIGZhY3QgcXVlc3Rpb25zKSIsCiAgICAgICBjb2xvciA9ICJDYXRlZ29yeSIpCmBgYAoKCg==